package com.itheima;

import java.util.TreeSet;
import java.util.Comparator;

// 这个类演示了TreeSet的不同用法，包括默认排序、自然排序和自定义排序
public class TreeSetDemo {
    public static void main(String[] args) {
        // 演示TreeSet中整数元素的默认排序
        Test();
        // 演示TreeSet中Student对象元素的自然排序
        Test2();
        // 演示TreeSet中Student对象元素的自定义排序，基于姓名
        Test3();
        int sum = sum(1, 2, 3, 4, 5);
        System.out.println(sum);

    }

    private static void Test() {
        // 创建一个整数类型的TreeSet，并添加多个元素
        TreeSet <Integer> set = new TreeSet<>();

        set.add(1);
        set.add(9);
        set.add(3);
        set.add(7);
        set.add(5);

        // 遍历并打印TreeSet中的每个整数
        for (Integer integer : set) {
            System.out.println(integer);
        }
    }

    public static void Test2() {
        // 打印分隔线
        System.out.println("---------------------------------");
        // 创建一个Student对象类型的TreeSet，并添加多个元素
        TreeSet <Student> set = new TreeSet<>();
        set.add(new Student("杨7", 20));
        set.add(new Student("杨8", 30));
        set.add(new Student("杨9", 40));

        // 遍历并打印TreeSet中每个Student对象的姓名和年龄
        for (Student student : set) {
            System.out.println(student.getName()+"---"+student.getAge());
        }
    }

    public static void Test3() {
        // 打印分隔线
        System.out.println("---------------------------------");
        // 创建一个基于姓名的自定义比较器，用于Student对象
        Comparator<Student> comparator = Comparator.comparing(Student::getName);
        // 使用自定义比较器创建一个Student对象类型的TreeSet，并添加多个元素
        TreeSet<Student> set = new TreeSet<>(comparator);
        set.add(new Student("Tom", 20));
        set.add(new Student("Jack", 40));
        set.add(new Student("Niko", 30));

        // 遍历并打印TreeSet中每个Student对象的姓名和年龄，按姓名排序
        for (Student student : set) {
            System.out.println(student.getName()+"---"+student.getAge());
        }
    }
    public static int sum(int... a){System.out.println("---------------------------------");
        int total = 0;
        for (int i = 0; i < a.length; i++) {
            total += a[i];
        }
        return total;
    }

}

